﻿using System;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace TestWebApplication.Models.Forms
{
    public class UserRegistrationForm
    {
        [Required(ErrorMessage = "Не задан логин")]
        [Display(Name = "Логин")]
        [StringLength(20, ErrorMessage = "Слишком длинный логин")]
        public string LoginName { get; set; }

        [Required(ErrorMessage = "Не задан адрес e-mail")]
        [Display(Name = "Адрес e-mail")]
        [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$",
            ErrorMessage = "Введите корректный e-mail")]
        [StringLength(100, ErrorMessage = "Слишком длинный e-mail")]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [Required(ErrorMessage = "Не указана дата рождения")]
        [Display(Name = "День рождения")]
        [RegularExpression(@"[0-3][0-9].[0-1][0-9].[0-9][0-9][0-9][0-9]",
            ErrorMessage = "Введите корректный формат даты dd.mm.yyyy")]
        public string Birthday { get; set; }

        [Required(ErrorMessage = "Не указан цвет")]
        [Display(Name = "Любимый цвет")]
        [StringLength(6, ErrorMessage = "Некорректный формат")]
        public string LacesColor { get; set; }

        [Required(ErrorMessage = "Не задан пароль")]
        [ValidatePasswordLength]
        [DataType(DataType.Password)]
        [Display(Name = "Пароль")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Подтверждение пароля")]
        [Compare("Password", ErrorMessage = "Пароль и его подтверждение не совпадают.")]
        public string ConfirmPassword { get; set; }
        
        public DateTime GetBirthayAsDateTime()
        {
            return DateTime.ParseExact(Birthday, "dd.MM.yyyy",
                System.Globalization.CultureInfo.InvariantCulture,
                System.Globalization.DateTimeStyles.AllowWhiteSpaces);
        }

    }
}